package com.doraemon.service;

import com.doraemon.vo.OrderReportVO;
import com.doraemon.vo.SalesTop10ReportVO;
import com.doraemon.vo.TurnoverReportVO;
import com.doraemon.vo.UserReportVO;

import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;

/**
 * 数据报表管理Service
 **/
public interface ReportService {

    /***
     * 根据时间区间统计营业额
     * ---
     * @param begin 起始时间
     * @param end 结束时间
     * @return: com.doraemon.vo.TurnoverReportVO
     */
    TurnoverReportVO getTurnover(LocalDate begin, LocalDate end);

    /***
     * 根据时间区间统计用户数量
     * ---
     * @param begin 起始时间
     * @param end 结束时间
     * @return: com.doraemon.vo.UserReportVO
     */
    UserReportVO getUserStatistics(LocalDate begin, LocalDate end);

    /***
     * 根据时间区间统计订单数量
     * ---
     * @param begin 起始时间
     * @param end 结束时间
     * @return: com.doraemon.vo.OrderReportVO
     */
    OrderReportVO getOrderStatistics(LocalDate begin, LocalDate end);

    /***
     * 查询指定时间区间内的销量排名top10
     * ---
     * @param begin 起始时间
     * @param end 结束时间
     * @return: com.doraemon.vo.SalesTop10ReportVO
     */
    SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end);

    /***
     * 导出近30天的运营数据报表
     * ---
     * @param response HttpServletResponse 对象，用于将生成的 Excel 文件写入响应流，供客户端下载
     * @return: void
    */
    void exportBusinessData(HttpServletResponse response);
}
